/**
 * @file MMA8453Q.h
 *
 * Definicion y Funciones del Acelerometro MMA8453Q de Freescale Semiconductor
 *
 * @version  1.00a
 * @date     13/5/2014
 * @author   Pirx
 *
 */

#ifndef __MMA8453Q_H_
#define __MMA8453Q_H_

/***************************** Include Files *********************************/

#include <GenericTypeDefs.h>
#include "I2C_lib.h"

/************************** Constant Definitions *****************************/

#define		MMA_1		0
#define		MMA_IRQ_MT	0x47
#define		MMA_IRQ_LP	0x54

/**************************** Type Definitions *******************************/

typedef enum {
	Eje_X = 0,				// Ejes
	Eje_Y,
	Eje_Z,
} E_Axis;

/************************** Function Prototypes ******************************/

extern void Mma8453Init(UINT8 dev, UINT8 sd0, UINT8 ena);	// Inicializacion
extern UINT8 Mma8453Timer(UINT8 dev);						// Control de Timers
extern void Mma8453Standby(UINT8 dev, UINT8 sby);			// Activa y Desactiva el Dispositivo
extern UINT8 Mma8453Prep(UINT8 dev, StrI2C* i2c);			// Prepara Comunicaciones
extern UINT8 Mma8453Proc(UINT8 dev, StrI2C* i2c);			// Procesa Comunicaciones
extern UINT8 Mma8453GetLocked(UINT8 dev);					// Obtiene el Estado del Chip
extern INT16* Mma8453GetMotion(UINT8 dev, UINT8 ax);		// Obtiene la aceleracion en un eje
extern UINT8* Mma8453GetIRQ(UINT8 dev, UINT8 irq);			// Obtiene el Byte de Estado de la Irq solicitada
extern BOOL Mma8453GetIrgPending(UINT8 dev, UINT8 irq);		// Obtiene el estado pendiente de envio de una interrupcion
extern BOOL Mma8453ClearIRQ(UINT8 dev, UINT8 irq);			// Limpia la Interrupcion Seleccionada
extern BOOL Mma8553GetIrqBusy(UINT8 dev);					// Obtiene el proceso de IRQ
extern void Mma8553SetIrqBusy(UINT8 dev, BOOL dat);			// Establece el proceso de IRQ

#endif